 /**
   * 智能返回
   * @param {string} fallbackUrl 无上级页面时的跳转地址
   * @param {number} delta 返回的页面数
   */
export function smartBack(fallbackUrl, delta = 1) {
    const pages = getCurrentPages()
    if (pages.length > delta) {
      uni.navigateBack({ delta })
    } else {
      uni.reLaunch({ url: fallbackUrl })
    }
  }
  
 
 /**
  * 将云存储ID转换为可访问的URL
  * @param {string} cloudId - 云存储ID，例如: 
  *        cloud://env-00jxtaoeuh3f/wallpaper/category/1743343680583_1.jpg (阿里云)
  *        或 qiniu://wallpaper/category/1743343680583_1.jpg (七牛云)
  * @returns {string} 可访问的图片URL
  */
 const CDN = 'cdn.isscloud.site';
 export function cloudIdToUrl(cloudId, options) {

   if (!cloudId) return '';
    const {h , w} = options || {};
   // 如果已经是http/https链接，直接返回
   if (cloudId.startsWith('http://') || cloudId.startsWith('https://')) {
	
     return cloudId+((h && w) ? `?imageView2/1/w/${w}/h/${h}`:'');
   }
   
   // 处理七牛云格式 qiniu://path/to/file
   if (cloudId.startsWith('qiniu://')) {
	
     const path = cloudId.replace('qiniu://', '');
	
	 if(h && w) {
		 return  `https://${CDN}/${path}?imageView2/1/w/${w}/h/${h}`;
	 }
     return `https://${CDN}/${path}`;
   }
   
   // 处理阿里云格式 cloud://env-id/path/to/file
   if (cloudId.startsWith('cloud://')) {
	   	    
     const matches = cloudId.match(/^cloud:\/\/([^/]+)\/(.+)$/);
     if (matches && matches.length >= 3) {
       const env = matches[1]; // 环境ID
       const filePath = matches[2]; // 文件路径
	   if(h && w) {
	   		 return  `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/1/w/${w}/h/${h}`;
	   }
	   if(w) {
		    return  `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/0/w/${w}`;
	   }
	   if(h) {
	   		    return  `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/0/h/${h}`;
	   }
       return `https://${env}.normal.cloudstatic.cn/${filePath}`;
     }
   }
   
   console.warn('Invalid cloud storage ID:', cloudId);
   return cloudId; // 返回原始值，避免报错
 }
 
 /**
  * 将云存储URL转换为云存储ID
  * @param {string} url - 云存储URL，例如: 
  *        https://env-00jxtaoeuh3f.normal.cloudstatic.cn/wallpaper/category/1743343680583_1.jpg (阿里云)
  *        或 https://cdn.isscloud.site/wallpaper/category/1743343680583_1.jpg (七牛云)
  * @returns {string} 云存储ID
  */
 export function urlToCloudId(url) {
   if (!url) return '';
   
   // 如果已经是cloud://或qiniu://格式，直接返回
   if (url.startsWith('cloud://') || url.startsWith('qiniu://')) {
     return url;
   }
   
   // 处理七牛云URL
   if (url.includes(CDN)) {
     const path = url.replace(new RegExp(`^https?://${CDN}/`), '');
     return `qiniu://${path}`;
   }
   
   // 处理阿里云URL
   const aliMatches = url.match(/^https?:\/\/([^.]+)\.normal\.cloudstatic\.cn\/(.+)$/);
   if (aliMatches && aliMatches.length >= 3) {
     const env = aliMatches[1]; // 环境ID
     const filePath = aliMatches[2]; // 文件路径
     return `cloud://${env}/${filePath}`;
   }
   
   console.warn('Invalid cloud storage URL:', url);
   return url; // 返回原始值，避免报错
 }
 

/**
 * 时间格式化工具
 * @param {number|string|Date} time - 时间戳（毫秒/秒）、日期字符串或 Date 对象
 * @param {string} format - 格式模板，默认 'yyyy-MM-dd HH:mm:ss'
 * @returns {string} 格式化后的时间字符串
 */
export function formatTime(time, format = 'yyyy-MM-dd HH:mm:ss') {
  // 统一处理时间输入（支持时间戳秒/毫秒、日期字符串、Date对象）
  if(time != undefined) {
	  let date;
	  if (typeof time === 'number') {
	  	  try {
	  		  // 处理秒级时间戳（10位）
	  	  	date = time.toString().length === 10 ? new Date(time * 1000) : new Date(time)
	  	  } catch (error) {
	  	  	//TODO handle the exception
	  		return ''
	  	  }
	  } else if (typeof time === 'string') {
	    date = new Date(time);
	  } else if (time instanceof Date) {
	    date = time;
	  } else {
	    console.warn('Invalid time input:', time);
	    return '';
	  }
	  
	  // 检查日期是否有效
	  if (isNaN(date.getTime())) {
	    console.warn('Invalid date:', time);
	    return '';
	  }
	  
	  // 提取日期各部分
	  const year = date.getFullYear();
	  const month = date.getMonth() + 1;
	  const day = date.getDate();
	  const hours = date.getHours();
	  const minutes = date.getMinutes();
	  const seconds = date.getSeconds();
	  
	  // 补零函数
	  const padZero = (num) => String(num).padStart(2, '0');
	  
	  // 格式替换
	  return format
	    .replace('yyyy', String(year))
	    .replace('MM', padZero(month))
	    .replace('dd', padZero(day))
	    .replace('HH', padZero(hours))
	    .replace('mm', padZero(minutes))
	    .replace('ss', padZero(seconds));
  } else {
	  return ''
  }
}

/**
 * 包装API请求方法，统一处理响应结果
 * @param {Promise} apiCall - API调用方法
 * @returns {Promise} 处理后的响应数据或错误
 */
export async function handleApiResponse(apiCall) {
  try {
    const res = await apiCall();
    
    if (res.code === 200) {
      // 成功响应，返回data数据
      return res.data;
    } else {
      // 非200响应，抛出错误信息
      throw new Error(res.msg || '请求处理失败');
    }
  } catch (error) {
    // 捕获网络错误或其他异常
    throw new Error(error.message || 'API请求异常');
  }
}

// 可选：添加快捷方法
export const formatDate = (time) => formatTime(time, 'yyyy-MM-dd');
export const formatDateTime = (time) => formatTime(time, 'yyyy-MM-dd HH:mm:ss');